﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Controls.Primitives;
using produccion.clases;
using System.IO;
using System.Collections.ObjectModel;
using System.Data;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para frmCalend.xaml
    /// </summary>
    public partial class frmCalend : Window
    {
        CLSCALEND Calend = new CLSCALEND();
        CLSSEMANAS Sem = new CLSSEMANAS();
        DateTime FechaInicial, FechaActual, FechaFinal = new DateTime();
        ObservableCollection<RegCalend> Lista = new ObservableCollection<RegCalend>();

        public frmCalend()
        {            
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            for (int i = 2010; i < 2101; i++)
            {
                cbAño.Items.Add(i);
            }
            DateTime DttFecha = DateTime.Now;
            cbAño.Text = DttFecha.Year.ToString();
            dtpFecha.Text = System.Convert.ToDateTime("01/01/" + cbAño.Text).ToString();
        }

        private void btnSalir_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void btnProcesar_Click(object sender, RoutedEventArgs e)
        {
            if (cbAño.Text == "")
            {
                MessageBox.Show("Debe seleccionar un año!", "Calendario", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }
            if (dtpFecha.SelectedDate == null)
            {
                MessageBox.Show("Debe escoger el primer día del año", "Calendario", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }
            else
            {
                if (Convert.ToInt16(cbAño.Text) != Convert.ToInt16(Convert.ToDateTime(dtpFecha.Text).Year))
                {
                    MessageBox.Show("El año seleccionado y el año del primer Lunes deben coincidir!", "Calendario", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }
            }
            Sem.ANO_SEM = Convert.ToInt16(cbAño.Text);
            DataTable dt = new DataTable();
            dt = Sem.Consulta();
            if (dt.Rows.Count > 0)
            {
                MessageBox.Show("Ya existe información para el año " + cbAño.Text, "Calendario", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                Lista.Clear();
                dgCal.ItemsSource = null;
                RegCalend Rc = new RegCalend();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Rc.SEMANA = Convert.ToInt16(dt.Rows[i][1].ToString());
                    Rc.DESDE = Convert.ToDateTime(dt.Rows[i][2].ToString()).ToShortDateString();
                    Rc.HASTA = Convert.ToDateTime(dt.Rows[i][3].ToString()).ToShortDateString();
                    Rc.LUNES.FECHA=Convert.ToDateTime(Rc.DESDE);
                    Calend.FECHA_CAL = Rc.LUNES.FECHA;
                    Rc.LUNES.FESTIVO = Calend.EsFestivo();
                    Rc.MARTES.FECHA=Convert.ToDateTime(Rc.DESDE).AddDays(1);
                    Calend.FECHA_CAL = Rc.MARTES.FECHA;
                    Rc.MARTES.FESTIVO = Calend.EsFestivo();
                    Rc.MIERCOLES.FECHA = Convert.ToDateTime(Rc.DESDE).AddDays(2);
                    Calend.FECHA_CAL = Rc.MIERCOLES.FECHA;
                    Rc.MIERCOLES.FESTIVO = Calend.EsFestivo();
                    Rc.JUEVES.FECHA = Convert.ToDateTime(Rc.DESDE).AddDays(3);
                    Calend.FECHA_CAL = Rc.JUEVES.FECHA;
                    Rc.JUEVES.FESTIVO = Calend.EsFestivo();
                    Rc.VIERNES.FECHA = Convert.ToDateTime(Rc.DESDE).AddDays(4);
                    Calend.FECHA_CAL = Rc.VIERNES.FECHA;
                    Rc.VIERNES.FESTIVO = Calend.EsFestivo();
                    Rc.SABADO.FECHA = Convert.ToDateTime(Rc.DESDE).AddDays(5);
                    Calend.FECHA_CAL = Rc.SABADO.FECHA;
                    Rc.SABADO.FESTIVO = Calend.EsFestivo();
                    Rc.DOMINGO.FECHA = Convert.ToDateTime(Rc.DESDE).AddDays(6);
                    Lista.Add(Rc);
                    Rc = new RegCalend();
                }
                dgCal.ItemsSource = Lista;
                /*
                for (int i = 0; i < Lista.Count; i++)
                {
                    Rc = Lista[i];
                    Rc.
                }*/
            }
            else
            {
                Lista.Clear();
                dgCal.ItemsSource = null;
                FechaInicial = System.Convert.ToDateTime(dtpFecha.Text.ToString());
                FechaActual = FechaInicial;
                FechaFinal = System.Convert.ToDateTime("31/12/" + cbAño.Text);
                RegCalend Rc = new RegCalend();

                string strDiaDeLaSemana = "";//FJRF - Almacena el dia de la semana seleccionado
                strDiaDeLaSemana = pStrDiaDeLaSemana(FechaInicial);

                for (int i = 1; FechaActual <= FechaFinal; i++)
                {
                    if (i == 1)
                    {
                        Rc.SEMANA = i;
                        Rc.DESDE = FechaInicial.ToShortDateString();
                        
                        if (strDiaDeLaSemana == "Lunes")
                        {
                            Rc.HASTA = FechaInicial.AddDays(6).ToShortDateString();

                            Rc.LUNES.FECHA = FechaInicial;
                            Rc.MARTES.FECHA = FechaInicial.AddDays(1);
                            Rc.MIERCOLES.FECHA = FechaInicial.AddDays(2);
                            Rc.JUEVES.FECHA = FechaInicial.AddDays(3);
                            Rc.VIERNES.FECHA = FechaInicial.AddDays(4);
                            Rc.SABADO.FECHA = FechaInicial.AddDays(5);
                            Rc.DOMINGO.FECHA = FechaInicial.AddDays(6);

                            Lista.Add(Rc);
                            Rc = new RegCalend();
                            FechaActual = FechaInicial.AddDays(7);
                        }
                        if (strDiaDeLaSemana == "Martes")
                        {
                            Rc.HASTA = FechaInicial.AddDays(5).ToShortDateString();

                            Rc.LUNES.FECHA = FechaInicial.AddDays(-1);
                            Rc.MARTES.FECHA = FechaInicial;
                            Rc.MIERCOLES.FECHA = FechaInicial.AddDays(1);
                            Rc.JUEVES.FECHA = FechaInicial.AddDays(2);
                            Rc.VIERNES.FECHA = FechaInicial.AddDays(3);
                            Rc.SABADO.FECHA = FechaInicial.AddDays(4);
                            Rc.DOMINGO.FECHA = FechaInicial.AddDays(5);

                            Lista.Add(Rc);
                            Rc = new RegCalend();
                            FechaActual = FechaInicial.AddDays(6);
                        }
                        if (strDiaDeLaSemana == "Miercoles")
                        {
                            Rc.HASTA = FechaInicial.AddDays(4).ToShortDateString();

                            Rc.LUNES.FECHA = FechaInicial.AddDays(-2);
                            Rc.MARTES.FECHA = FechaInicial.AddDays(-1);
                            Rc.MIERCOLES.FECHA = FechaInicial;
                            Rc.JUEVES.FECHA = FechaInicial.AddDays(1);
                            Rc.VIERNES.FECHA = FechaInicial.AddDays(2);
                            Rc.SABADO.FECHA = FechaInicial.AddDays(3);
                            Rc.DOMINGO.FECHA = FechaInicial.AddDays(4);

                            Lista.Add(Rc);
                            Rc = new RegCalend();
                            FechaActual = FechaInicial.AddDays(5);
                        }
                        if (strDiaDeLaSemana == "Jueves")
                        {
                            Rc.HASTA = FechaInicial.AddDays(3).ToShortDateString();

                            Rc.LUNES.FECHA = FechaInicial.AddDays(-3);
                            Rc.MARTES.FECHA = FechaInicial.AddDays(-2);
                            Rc.MIERCOLES.FECHA = FechaInicial.AddDays(-1);
                            Rc.JUEVES.FECHA = FechaInicial;
                            Rc.VIERNES.FECHA = FechaInicial.AddDays(1);
                            Rc.SABADO.FECHA = FechaInicial.AddDays(2);
                            Rc.DOMINGO.FECHA = FechaInicial.AddDays(3);

                            Lista.Add(Rc);
                            Rc = new RegCalend();
                            FechaActual = FechaInicial.AddDays(4);
                        }
                        if (strDiaDeLaSemana == "Viernes")
                        {
                            Rc.HASTA = FechaInicial.AddDays(2).ToShortDateString();

                            Rc.LUNES.FECHA = FechaInicial.AddDays(-4);
                            Rc.MARTES.FECHA = FechaInicial.AddDays(-3);
                            Rc.MIERCOLES.FECHA = FechaInicial.AddDays(-2);
                            Rc.JUEVES.FECHA = FechaInicial.AddDays(-1);
                            Rc.VIERNES.FECHA = FechaInicial;
                            Rc.SABADO.FECHA = FechaInicial.AddDays(1);
                            Rc.DOMINGO.FECHA = FechaInicial.AddDays(2);

                            Lista.Add(Rc);
                            Rc = new RegCalend();
                            FechaActual = FechaInicial.AddDays(3);
                        }
                        if (strDiaDeLaSemana == "Sabado")
                        {
                            Rc.HASTA = FechaInicial.AddDays(1).ToShortDateString();

                            Rc.LUNES.FECHA = FechaInicial.AddDays(-5);
                            Rc.MARTES.FECHA = FechaInicial.AddDays(-4);
                            Rc.MIERCOLES.FECHA = FechaInicial.AddDays(-3);
                            Rc.JUEVES.FECHA = FechaInicial.AddDays(-2);
                            Rc.VIERNES.FECHA = FechaInicial.AddDays(-1);
                            Rc.SABADO.FECHA = FechaInicial;
                            Rc.DOMINGO.FECHA = FechaInicial.AddDays(1);

                            Lista.Add(Rc);
                            Rc = new RegCalend();
                            FechaActual = FechaInicial.AddDays(2);
                        }
                        if (strDiaDeLaSemana == "Domingo")
                        {
                            Rc.HASTA = FechaInicial.ToShortDateString();

                            Rc.LUNES.FECHA = FechaInicial.AddDays(-6);
                            Rc.MARTES.FECHA = FechaInicial.AddDays(-5);
                            Rc.MIERCOLES.FECHA = FechaInicial.AddDays(-4);
                            Rc.JUEVES.FECHA = FechaInicial.AddDays(-3);
                            Rc.VIERNES.FECHA = FechaInicial.AddDays(-2);
                            Rc.SABADO.FECHA = FechaInicial.AddDays(-1);
                            Rc.DOMINGO.FECHA = FechaInicial;

                            Lista.Add(Rc);
                            Rc = new RegCalend();
                            FechaActual = FechaInicial.AddDays(1);
                        }
                    }
                    else
                    {
                        Rc.SEMANA = i;
                        Rc.DESDE = FechaActual.ToShortDateString();
                        Rc.HASTA = FechaActual.AddDays(6).ToShortDateString();
                        Rc.LUNES.FECHA = FechaActual;
                        Rc.MARTES.FECHA = FechaActual.AddDays(1);
                        Rc.MIERCOLES.FECHA = FechaActual.AddDays(2);
                        Rc.JUEVES.FECHA = FechaActual.AddDays(3);
                        Rc.VIERNES.FECHA = FechaActual.AddDays(4);
                        Rc.SABADO.FECHA = FechaActual.AddDays(5);
                        Rc.DOMINGO.FECHA = FechaActual.AddDays(6);
                        Lista.Add(Rc);
                        Rc = new RegCalend();
                        FechaActual = FechaActual.AddDays(7);
                    }
                }
                dgCal.ItemsSource = Lista;
            }
        }
        private string pStrDiaDeLaSemana(DateTime DttFecha)
        {
            string strtDiaRetornado = "";

            if (DttFecha.DayOfWeek == DayOfWeek.Monday)
            {
                strtDiaRetornado = "Lunes";
            }
            if (DttFecha.DayOfWeek == DayOfWeek.Tuesday)
            {
                strtDiaRetornado = "Martes";
            }
            if (DttFecha.DayOfWeek == DayOfWeek.Wednesday)
            {
                strtDiaRetornado = "Miercoles";
            }
            if (DttFecha.DayOfWeek == DayOfWeek.Thursday)
            {
                strtDiaRetornado = "Jueves";
            }
            if (DttFecha.DayOfWeek == DayOfWeek.Friday)
            {
                strtDiaRetornado = "Viernes";
            }
            if (DttFecha.DayOfWeek == DayOfWeek.Saturday)
            {
                strtDiaRetornado = "Sabado";
            }
            if (DttFecha.DayOfWeek == DayOfWeek.Sunday)
            {
                strtDiaRetornado = "Domingo";
            }

            return strtDiaRetornado;
        }
        private void dgCal_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            int i = dgCal.SelectedIndex;
            int j=dgCal.CurrentCell.Column.DisplayIndex;

            if (i == -1)
            {
                return;
            }

            if (j == 3)
            {
                Lista[i].LUNES.FESTIVO = Lista[i].LUNES.FESTIVO == true ? false : true; 
            }
            if (j == 4)
            {
                Lista[i].MARTES.FESTIVO = Lista[i].MARTES.FESTIVO == true ? false : true;
            }
            if (j == 5)
            {
                Lista[i].MIERCOLES.FESTIVO = Lista[i].MIERCOLES.FESTIVO == true ? false : true;
            }
            if (j == 6)
            {
                Lista[i].JUEVES.FESTIVO = Lista[i].JUEVES.FESTIVO == true ? false : true;
            }
            if (j == 7)
            {
                Lista[i].VIERNES.FESTIVO = Lista[i].VIERNES.FESTIVO == true ? false : true;
            }
            if (j == 8)
            {
                Lista[i].SABADO.FESTIVO = Lista[i].SABADO.FESTIVO == true ? false : true;
            }
        }

        private void btnGrabar_Click(object sender, RoutedEventArgs e)            
        {
            try
            {
                if (cbAño.Text == "")
                {
                    MessageBox.Show("Debe seleccionar un año!", "Calendario", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }
                if (Convert.ToInt16(cbAño.Text) != Convert.ToInt16(Convert.ToDateTime(dtpFecha.Text).Year))
                {
                    MessageBox.Show("El año seleccionado y el año del primer Lunes deben coincidir!", "Calendario", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                if (MessageBox.Show("Está seguro de grabar la información?", "Calendario", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                {
                    Calend.Eliminar(Convert.ToDateTime("01/01/" + cbAño.Text), Convert.ToDateTime("31/12/" + cbAño.Text));
                    Sem.ANO_SEM = Convert.ToInt16(cbAño.Text);
                    Sem.Eliminar();
                    for (int i = 0; i < Lista.Count; i++)
                    {
                        RegCalend Rc = new RegCalend();
                        Rc = Lista[i];
                        Calend.FECHA_CAL = Rc.LUNES.FECHA;
                        Calend.SEMANA_CAL = Rc.SEMANA;
                        Calend.FESTIVO = Rc.LUNES.FESTIVO == true ? "S" : "N";
                        if (Rc.LUNES.FECHA.Year == Convert.ToInt16(cbAño.Text))
                        {
                            Calend.Insertar();
                        }
                        Calend.FECHA_CAL = Rc.MARTES.FECHA;
                        Calend.SEMANA_CAL = Rc.SEMANA;
                        Calend.FESTIVO = Rc.MARTES.FESTIVO == true ? "S" : "N";
                        if (Rc.MARTES.FECHA.Year == Convert.ToInt16(cbAño.Text))
                        {
                            Calend.Insertar();
                        }
                        Calend.FECHA_CAL = Rc.MIERCOLES.FECHA;
                        Calend.SEMANA_CAL = Rc.SEMANA;
                        Calend.FESTIVO = Rc.MIERCOLES.FESTIVO == true ? "S" : "N";
                        if (Rc.MIERCOLES.FECHA.Year == Convert.ToInt16(cbAño.Text))
                        {
                            Calend.Insertar();
                        }
                        Calend.FECHA_CAL = Rc.JUEVES.FECHA;
                        Calend.SEMANA_CAL = Rc.SEMANA;
                        Calend.FESTIVO = Rc.JUEVES.FESTIVO == true ? "S" : "N";
                        if (Rc.JUEVES.FECHA.Year == Convert.ToInt16(cbAño.Text))
                        {
                            Calend.Insertar();
                        }
                        Calend.FECHA_CAL = Rc.VIERNES.FECHA;
                        Calend.SEMANA_CAL = Rc.SEMANA;
                        Calend.FESTIVO = Rc.VIERNES.FESTIVO == true ? "S" : "N";
                        if (Rc.VIERNES.FECHA.Year == Convert.ToInt16(cbAño.Text))
                        {
                            Calend.Insertar();
                        }
                        Calend.FECHA_CAL = Rc.SABADO.FECHA;
                        Calend.SEMANA_CAL = Rc.SEMANA;
                        Calend.FESTIVO = Rc.SABADO.FESTIVO == true ? "S" : "N";
                        if (Rc.SABADO.FECHA.Year == Convert.ToInt16(cbAño.Text))
                        {
                            Calend.Insertar();
                        }
                        Calend.FECHA_CAL = Rc.DOMINGO.FECHA;
                        Calend.SEMANA_CAL = Rc.SEMANA;
                        Calend.FESTIVO = Rc.DOMINGO.FESTIVO == true ? "S" : "N";
                        if (Rc.DOMINGO.FECHA.Year == Convert.ToInt16(cbAño.Text))
                        {
                            Calend.Insertar();
                        }
                        Sem.ANO_SEM = Convert.ToInt16(cbAño.Text);
                        Sem.NROSEM_SEM = Rc.SEMANA;
                        Sem.DESDE_SEM = Convert.ToDateTime(Rc.DESDE);
                        Sem.HASTA_SEM = Convert.ToDateTime(Rc.HASTA);
                        if (Sem.HASTA_SEM.Year != Sem.DESDE_SEM.Year)
                        {
                            Sem.HASTA_SEM = Convert.ToDateTime("31/12/" + Sem.DESDE_SEM.Year);
                        }
                        Sem.Insertar();
                    }
                }
                new MDOgeneral.notificar(wPnot, "Los cambios fueron guardados correctamente.", true);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error al grabar calendario.", MessageBoxButton.OK, MessageBoxImage.Error);
                new MDOgeneral.notificar(wPnot, "Los cambios no pueden ser guardados correctamente.", false);
            }
        }

        private void cbAño_LostFocus(object sender, RoutedEventArgs e)
        {            
        }

        private void cbAño_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            dtpFecha.Text = System.Convert.ToDateTime("01/01/" + cbAño.SelectedItem.ToString()).ToString();//FJRF - Asignamos el primer dia del año seleccionado

            Sem.ANO_SEM = Convert.ToInt16(cbAño.SelectedItem.ToString());
            DataTable dt = new DataTable();
            dt = Sem.Consulta();
            if (dt.Rows.Count > 0)
            {
                MessageBox.Show("Ya existe información para el año " + cbAño.SelectedItem.ToString(), "Calendario", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                Lista.Clear();
                dgCal.ItemsSource = null;
                RegCalend Rc = new RegCalend();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Rc.SEMANA = Convert.ToInt16(dt.Rows[i][1].ToString());

                    Rc.DESDE = Convert.ToDateTime(dt.Rows[i][2].ToString()).ToShortDateString();
                    Rc.HASTA = Convert.ToDateTime(dt.Rows[i][3].ToString()).ToShortDateString();

                    Rc.LUNES.FECHA = Convert.ToDateTime(Rc.DESDE);
                    Calend.FECHA_CAL = Rc.LUNES.FECHA;
                    Rc.LUNES.FESTIVO = Calend.EsFestivo();

                    Rc.MARTES.FECHA = Convert.ToDateTime(Rc.DESDE).AddDays(1);
                    Calend.FECHA_CAL = Rc.MARTES.FECHA;
                    Rc.MARTES.FESTIVO = Calend.EsFestivo();

                    Rc.MIERCOLES.FECHA = Convert.ToDateTime(Rc.DESDE).AddDays(2);
                    Calend.FECHA_CAL = Rc.MIERCOLES.FECHA;
                    Rc.MIERCOLES.FESTIVO = Calend.EsFestivo();

                    Rc.JUEVES.FECHA = Convert.ToDateTime(Rc.DESDE).AddDays(3);
                    Calend.FECHA_CAL = Rc.JUEVES.FECHA;
                    Rc.JUEVES.FESTIVO = Calend.EsFestivo();

                    Rc.VIERNES.FECHA = Convert.ToDateTime(Rc.DESDE).AddDays(4);
                    Calend.FECHA_CAL = Rc.VIERNES.FECHA;
                    Rc.VIERNES.FESTIVO = Calend.EsFestivo();

                    Rc.SABADO.FECHA = Convert.ToDateTime(Rc.DESDE).AddDays(5);
                    Calend.FECHA_CAL = Rc.SABADO.FECHA;
                    Rc.SABADO.FESTIVO = Calend.EsFestivo();

                    Rc.DOMINGO.FECHA = Convert.ToDateTime(Rc.DESDE).AddDays(6);
                    Lista.Add(Rc);
                    Rc = new RegCalend();
                }
                dgCal.ItemsSource = Lista;
            }
            else
            {
                Lista.Clear();
                dgCal.ItemsSource = null;
                RegCalend Rc = new RegCalend();
            }

        }

        private void dgCal_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.F3 && elemento != null)
            {
                if (e.Key == Key.F3)
                {
                    if (MDOgeneral.logBusquedadAbierta == true) { MDOgeneral.logBusquedadAbierta = false; }
                }
            }
        }        
    }

    public class RegCalend : ObservableObject
    {
        
        string desde, hasta;
        int semana;   

        public string DESDE
        {
            get { return desde; }
            set { desde = value; }
        }
        public string HASTA
        {
            get { return hasta; }
            set { hasta = value; }
        }

        public int SEMANA
        {
            get { return semana; }
            set { semana = value; }
        }

        CAL lunes = new CAL(), martes = new CAL(), miercoles = new CAL(), jueves = new CAL(), viernes = new CAL(), sabado = new CAL(), domingo = new CAL();

        public CAL LUNES
        {

            get { return lunes; }
            set { lunes = value; }
        }
        public CAL MARTES
        {

            get { return martes; }
            set { martes = value; }
        }
        public CAL MIERCOLES
        {   
            get { return miercoles; }
            set { miercoles = value; }
        }
        public CAL JUEVES
        {

            get { return jueves; }
            set { jueves = value; }
        }
        public CAL VIERNES
        {

            get { return viernes; }
            set { viernes = value; }
        }
        public CAL SABADO
        {

            get { return sabado; }
            set { sabado = value; }
        }
        public CAL DOMINGO
        {

            get { return domingo; }
            set { domingo = value; }
        }

        public class CAL : ObservableObject
        {
            DateTime fecha;
            int  dia, mes;
            Brush color;
            bool festivo=false;

            public DateTime FECHA
            {
                get { return fecha; }
                set
                {
                    fecha = value;
                    DIA = fecha.Day;
                    MES = fecha.Month;
                }
            }

            public Brush COLOR
            {
                get { return color; }
                set { color = value; RaisePropertyChangedEvent("COLOR"); }
            }

            public bool FESTIVO
            {
                get { return festivo; }
                set { festivo = value; RaisePropertyChangedEvent("FESTIVO"); }
                
            }

            public int DIA
            {
                get { return dia; }
                set { dia = value; }
            }

            public int MES
            {
                get { return mes; }
                set 
                { 
                    mes = value;
                    if (mes == 1)
                    {
                        COLOR = Brushes.AntiqueWhite;
                    }
                    if (mes == 2)
                    {
                        COLOR = Brushes.Azure;
                    }
                    if (mes == 3)
                    {
                        COLOR = Brushes.CornflowerBlue;
                    }
                    if (mes == 4)
                    {
                        COLOR = Brushes.LightGreen;
                    }
                    if (mes == 5)
                    {
                        COLOR = Brushes.LightSteelBlue;
                    }
                    if (mes == 6)
                    {
                        COLOR = Brushes.MediumAquamarine;
                    }
                    if (mes == 7)
                    {
                        COLOR = Brushes.Turquoise;
                    }
                    if (mes == 8)
                    {
                        COLOR = Brushes.Violet;
                    }
                    if (mes == 9)
                    {
                        COLOR = Brushes.Salmon;
                    }
                    if (mes == 10)
                    {
                        COLOR = Brushes.Silver;
                    }
                    if (mes == 11)
                    {
                        COLOR = Brushes.Yellow;
                    }
                    if (mes == 12)
                    {
                        COLOR = Brushes.SkyBlue;
                    }
                }
            }
        }

    }
}
